package com.dora.basic.basic;

import org.junit.jupiter.api.Test;

import java.util.Arrays;

/**
 * 参数传递
 *
 * @author hanchen
 * @date 2024/02/20
 */
public class ParameterPass {

    /**
     * 按值传递
     */
    @Test
    public void passByValue() {
        int num = 10;
        modifyNumber(num);
        // 输出 10
        System.out.println("值传递 Outside method: " + num);
    }

    /**
     * 参照传递
     */
    @Test
    public void passByReference() {
        int[] arr = {1, 2, 3};
        modifyArray(arr);
        // 输出 [1, 2, 4]
        System.out.println("引用传递 Outside method: " + Arrays.toString(arr));
    }

    /**
     * 修改数量
     *
     * @param number 数量
     */
    public static void modifyNumber(int number) {
        number = 20;
        // 输出 20
        System.out.println("值传递 Inside method: " + number);
    }

    /**
     * 修改数组
     *
     * @param array 数组
     */
    public static void modifyArray(int[] array) {
        array[2] = 4;
        // 输出 [1, 2, 4]
        System.out.println("引用传递 Inside method: " + Arrays.toString(array));
    }
}
